/**
 * 
 */
package jMiiEditor.gui.i18ntranslator;

import java.io.File;
import java.io.IOException;
import cx.ath.choisnet.i18n.builder.I18nPropertyResourceBundleAutoUpdate;
import jMiiEditor.gui.JMiiEditorMainJFrame;
import jMiiEditor.gui.checker.JMiiEditorCheckJDialog;
import jMiiEditor.gui.htmldialog.HTMLDialog;
import jMiiEditor.gui.preferences.JMiiEditorPreferenceJDialog;
import jMiiEditor.i18n.I18nBundle;
import jMiiEditor.mii.Mii;
import jMiiEditor.mii.checker.MiiChecker;
import jMiiEditor.mii.checker.MiiCheckerResult;

/**
 * @author CC
 */
public class JMiiEditorBuildRessourceBundle 
{
    public static void main( String[] args )
        throws IOException
    {
        // Default language !

        // Create objects to I18N !
        JMiiEditorMainJFrame        jMiiEditorMainJFrame        = new JMiiEditorMainJFrame();
        JMiiEditorCheckJDialog      jMiiEditorCheckJDialog      = new JMiiEditorCheckJDialog(jMiiEditorMainJFrame);
        JMiiEditorPreferenceJDialog jMiiEditorPreferenceJDialog = new JMiiEditorPreferenceJDialog(jMiiEditorMainJFrame);
        HTMLDialog                  htmlDialog                  = new HTMLDialog(jMiiEditorMainJFrame);

        MiiChecker                  miiChecker                  = new MiiChecker(new Mii());
        MiiCheckerResult            miiCheckerResult            = new MiiCheckerResult();

        jMiiEditorCheckJDialog.setTableModel( miiChecker );
        jMiiEditorCheckJDialog.setTableModel( miiCheckerResult );

        // Build a quick list of them
        ObjectToI18n<?>[] toI18n = {
                new ObjectToI18n<JMiiEditorMainJFrame>(
                        jMiiEditorMainJFrame,
                        jMiiEditorMainJFrame.getClass()
                        ),
                new ObjectToI18n<JMiiEditorCheckJDialog>(
                        jMiiEditorCheckJDialog,
                        JMiiEditorCheckJDialog.class
                        ),
                new ObjectToI18n<JMiiEditorPreferenceJDialog>(
                        jMiiEditorPreferenceJDialog,
                        JMiiEditorPreferenceJDialog.class
                        ),
                new ObjectToI18n<HTMLDialog>(
                        htmlDialog,
                        HTMLDialog.class
                        )
                };

//        AutoI18nUpdateBundle autoI18n = new AutoI18nUpdateBundle( 
//                i18Builder,
//                AutoI18nUpdateBundle.Attrib.ADD_ONLY_NEEDED_KEY
//                );
        I18nPropertyResourceBundleAutoUpdate autoI18n =
            I18nBundle.getI18nPropertyResourceBundleAutoUpdate();
        File outputFile = new File( 
                new File(".").getAbsoluteFile(), 
                I18nBundle.getMessagesBundle()
                );
        autoI18n.setOutputFile( outputFile );

        for( ObjectToI18n<?> objectEntry : toI18n ) {
            autoI18n.performeI18n( 
                    objectEntry.getObjectToI18n(),
                    objectEntry.getObjectToI18nClass() 
                    );
        }

        autoI18n.close();
        System.out.println( "Done." );
        System.exit( 0 );
    }

    public static class ObjectToI18n<T>
    {
        private final T                   objectToI18n;
        private final Class<? extends T>  objectToI18nClass;

        public ObjectToI18n( T objectToI18n, Class<? extends T>  clazz )
        {
            this.objectToI18n       = objectToI18n;
            this.objectToI18nClass  = clazz;
        }
        public T getObjectToI18n()
        {
            return objectToI18n;
        }
        public Class<? extends T> getObjectToI18nClass()
        {
            return objectToI18nClass;
        }
    }
}
